package br.jcrsistemas.syscomercio.janelas;

import java.awt.EventQueue;

import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import br.jcrsistemas.componentes.SysCampoValor;
import br.jcrsistemas.componentes.SysFrame;
import br.jcrsistemas.componentes.SysTabbedPane;
import br.jcrsistemas.componentes.SysTextField;
import br.jcrsistemas.syscomercio.bean.CategoriaProduto;
import br.jcrsistemas.syscomercio.bean.Produto;
import br.jcrsistemas.syscomercio.dao.CategoriaProdutoDAO;
import br.jcrsistemas.syscomercio.dao.ProdutoDAO;
import br.jcrsistemas.util.AutoCompleteComboBox;
import br.jcrsistemas.util.Fontes;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class FrmCadProdutos extends SysFrame {

	private JPanel contentPane;
	private final JLabel lblTitulo = new JLabel("Cadastro de Produtos");
	private final SysTabbedPane sysTabbedPane = new SysTabbedPane();
	private final JPanel panelPrincipal = new JPanel();
	private final JLabel lblCodBarra = new JLabel("Código de Barra:");
	private final SysTextField txtCodBarra = new SysTextField();
	private final JLabel lblDescrio = new JLabel("Descrição:");
	private final SysTextField txtDescricao = new SysTextField();
	private final JLabel lblCategoria = new JLabel("Categoria:");
	private final JComboBox comboCategoria = new AutoCompleteComboBox(new CategoriaProdutoDAO().listarTodos(), true);
	private final JLabel lblMarca = new JLabel("Marca:");
	private final AutoCompleteComboBox autoCompleteComboBox = new AutoCompleteComboBox();
	private final JLabel lblPreoCusto = new JLabel("Preço Custo:");
	private final SysCampoValor txtPrecoCusto = new SysCampoValor();
	private final JLabel label = new JLabel("");
	private final JLabel lblPreoVenda = new JLabel("Preço Venda:");
	private final SysCampoValor txtPrecoVenda = new SysCampoValor();
	private final JButton btnOk = new JButton("OK");

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					FrmCadProdutos frame = new FrmCadProdutos();
					frame.setVisible(true);
					frame.txtCodBarra.requestFocus();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public FrmCadProdutos() {
		setTitle("Cadastro de Produtos");
		initialize();
		sysTabbedPane.setMnemonicAt(0, 'P');
		txtCodBarra.requestFocus();
	}
	
	public boolean valida() {
		return true;
	}
	private void initialize() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1100, 720);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		lblTitulo.setBounds(12, 12, 571, 71);
		lblTitulo.setIcon(new ImageIcon(FrmCadProdutos.class.getResource("/br/jcrsistemas/icones/carton_64.png")));
		lblTitulo.setFont(Fontes.getFonteTitulo());
		
		contentPane.add(lblTitulo);
		sysTabbedPane.setBounds(12, 95, 1060, 532);
		
		contentPane.add(sysTabbedPane);
		
		sysTabbedPane.addTab("Principal", null, panelPrincipal, null);
		panelPrincipal.setLayout(null);
		lblCodBarra.setBounds(12, 12, 120, 15);
		
		panelPrincipal.add(lblCodBarra);
		txtCodBarra.setTamanho(13);
		txtCodBarra.setApenasNumero(true);
		txtCodBarra.setBounds(128, 10, 128, 24);
		
		panelPrincipal.add(txtCodBarra);
		lblDescrio.setBounds(274, 12, 76, 15);
		
		panelPrincipal.add(lblDescrio);
		txtDescricao.setTamanho(60);
		txtDescricao.setObrigatorio(true);
		txtDescricao.setBounds(351, 10, 554, 24);
		
		panelPrincipal.add(txtDescricao);
		lblCategoria.setBounds(12, 49, 83, 15);
		
		panelPrincipal.add(lblCategoria);
		comboCategoria.setBounds(128, 45, 128, 24);
		panelPrincipal.add(comboCategoria);
		lblMarca.setBounds(274, 49, 60, 15);
		
		panelPrincipal.add(lblMarca);
		autoCompleteComboBox.setBounds(351, 46, 275, 24);
		
		panelPrincipal.add(autoCompleteComboBox);
		lblPreoCusto.setBounds(12, 86, 83, 15);
		
		panelPrincipal.add(lblPreoCusto);
		txtPrecoCusto.setBounds(128, 84, 128, 19);
		
		panelPrincipal.add(txtPrecoCusto);
		label.setBounds(284, 86, 60, 15);
		
		panelPrincipal.add(label);
		lblPreoVenda.setBounds(274, 86, 113, 15);
		
		panelPrincipal.add(lblPreoVenda);
		txtPrecoVenda.setBounds(367, 84, 128, 19);
		
		panelPrincipal.add(txtPrecoVenda);
		btnOk.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(valida()) {
					Produto produto = new Produto();
					produto.setCodigoBarra(txtCodBarra.getText());
					produto.setDescricao(txtDescricao.getText());
					CategoriaProduto categoriaProduto;
					if(!(comboCategoria.getSelectedItem() instanceof CategoriaProduto)) {
						categoriaProduto = new CategoriaProduto();
						categoriaProduto.setCategoria(comboCategoria.getSelectedItem().toString());
					}
					else {
						categoriaProduto = (CategoriaProduto) comboCategoria.getSelectedItem();
					}
					CategoriaProdutoDAO daoCategoria = new CategoriaProdutoDAO();
					daoCategoria.gravar(categoriaProduto);
					produto.setCategoria(categoriaProduto);
					produto.setPrecoCompra(txtPrecoCusto.getValue());
					produto.setPrecoVenda(txtPrecoVenda.getValue());
					
					ProdutoDAO daoProduto = new ProdutoDAO();
					daoProduto.gravar(produto);
					
					
				}
			}
		});
		btnOk.setBounds(12, 635, 106, 25);
		
		contentPane.add(btnOk);
	}
}
